Debugging program failure exhibited by voluminous data

نویسندگان

  • Tat W. Chan
  • Arun Lakhotia
چکیده

It is difficult to debug a program when the data set that causes it to fail is large (or voluminous). The cues that may help in locating the fault are obscured by the large amount of information that is generated from processing the data set. Clearly, a smaller data set which exhibits the same failure should lead to the diagnosis of the fault more quickly than the initial, large data set. We term such a smaller data set a data slice and the process of creating it data slicing. The problem of creating a data slice is undecidable. In this paper, we investigate four generateand-test heuristics for deriving a smaller data set that reproduces the failure exhibited by a large data set. The four heuristics are: invariance analysis, origin tracking, random elimination, and programspecific heuristics. We also provide a classification of programs based upon a certain relationship between its input and output. This classification may be used to choose an appropriate heuristic in a given debugging scenario. As evidenced from a database of debugging anecdotes at the Open University, U.K., debugging failures exhibited by large data sets require inordinate amounts of time. Our data slicing techniques would significantly reduce the effort required in such scenarios.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Finding Failure Causes through Automated Testing

A program fails. Under which circumstances does this failure occur? One single algorithm, the delta debugging algorithm, suffices to determine these failure-inducing circumstances. Delta debugging tests a program systematically and automatically to isolate failureinducing circumstances such as the program input, changes to the program code, or executed statements.

متن کامل

RAID: A System to Aid in the Removal of Program Bugs

Debugging is hard. Each program bug brings its own particular problems, but there are usually three basic steps that a programmer must perform. These common steps are: (1) understanding something about the failure and the program being debugged, (2) finding the error in the program, and (3) correcting the error. Tools to assist in this process vary from providing virtually no assistance to inte...

متن کامل

Synopsis of Possible Collaboration in the Area of Software Debugging

Software debugging has been regarded as one of the challenges in the field of software engineering. In practice, traditional debugging needs extensive labor and time in order to locate bugs in a typical software program. A typical programmer needs to set breaking points and execute the buggy program on several inputs. At the same time, he needs to examine the program states and try to locate th...

متن کامل

Debugging Machine Learning Tasks

Unlike traditional programs (such as operating systems or word processors) which have large amounts of code, machine learning tasks use programs with relatively small amounts of code (written in machine learning libraries), but voluminous amounts of data. Just like developers of traditional programs debug errors in their code, developers of machine learning tasks debug and fix errors in their d...

متن کامل

8vlqj'hwhuplqlvwlf5hsod\iru'hexjjlqjri 'lvwulexwhgg5hdo7lphh6\vwhpv

Cyclic debugging is one of the most important and most commonly used activities in program development. During cyclic debugging, the program is repeatedly reexecuted to track down errors when a failure has been observed. This process necessitates reproducible program executions. Applying classical debugging techniques such using breakpoints or single stepping in real-time systems change the tem...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • Journal of Software Maintenance

دوره 10  شماره 

صفحات  -

تاریخ انتشار 1998